Php MySQLi语句的函数对数据库不做任何操作
我有以下PHP代码:Php MySQLi语句的函数对数据库不做任何操作,php,mysql,mysqli,Php,Mysql,Mysqli,我有以下PHP代码: <?php $email = 'email@email.com'; $phone = '+1 800 555 555'; //clean up phone number $phone = preg_replace("/[^0-9]/", '', $phone); $plan = 'europe'; $ip = '99.55.44.44'; $sendEmails = True; function addInfoToDatabase($token) {
<?php
$email = 'email@email.com';
$phone = '+1 800 555 555';
//clean up phone number
$phone = preg_replace("/[^0-9]/", '', $phone);
$plan = 'europe';
$ip = '99.55.44.44';
$sendEmails = True;
function addInfoToDatabase($token) {
//function that adds data to temporary table. token is passed through
//put new user info in database
$mysqli = new mysqli('localhost', 'php', '', 'php');
$stmt = $mysqli->prepare("INSERT INTO `temp_users` VALUES (?, ?, ?, ?, ?, ?, '')");
$stmt->bind_param('ssssss', $email, $phone, $plan, $sendEmails, $token, $ip);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}
addInfoToDatabase('24_tok');
?>
您试图在函数中使用变量$email
、$phone
、$plan
、$sendmails
和$ip
,但这些变量仅在函数外部设置。这意味着它们是全局变量,因此只有将它们作为参数传递给函数时,才能访问它们
不这样做的结果是将null
值传递到数据库。如果任何有问题的列定义为notnull
(很可能是),则查询将失败。您可以通过运行以下代码来验证失败的原因:
echo 'error '.$mysqli->errno().': '.$mysqli->error().'<br/>';
echo'error'.$mysqli->errno()。:'.$mysqli->error()。
;
由于+
登录$phone='+1800 555 555',您可能需要使用双引号而不是单引号代码>尝试将其替换为$phone=“+1 800 555 555”代码>我敢打赌它一定在尝试做一个数学方程式。并且还改变了$ip='99.55.44.44'代码>至$ip=“99.55.44.44”代码>试试看。@Fred ii-刚刚试过。结果和以前一样。数据库中没有数据。@Fred ii-PHP不尝试用字符串进行数学运算。单引号和双引号的唯一区别在于转义序列和变量插值。它运行时不会返回错误——你不会检查错误,那么你怎么知道呢?好的,谢谢@Barmar-我认为引号会有所不同。足够公平;我同意这样会更好。我试图不把OP搞糊涂,但会屈服于同行的压力。或者,将变量放入函数本身,而不是使用global
@艾德科特雷尔
echo 'error '.$mysqli->errno().': '.$mysqli->error().'<br/>';