以下代码:
<?php
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
echo "Connection is successful!<br/>";
$sql = "SELECT * FROM users";
$users = $dbh->query($sql);
foreach ($users as $row) {
print $row["name"] . "-" . $row["sex"] ."<br/>";
}
foreach ($users as $row) {
print $row["name"] . "-" . $row["sex"] ."<br/>";
}
$dbh = null;
}
catch (PDOexception $e) {
echo "Error is: " . $e-> etmessage();
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
Connection is successful!
person A-male
person B-female
Run Code Online (Sandbox Code Playgroud)
两次运行"foreach"不是我的目的,我只是好奇为什么两个"foreach"语句只输出一次结果?
以下是类似的情况:
<?php
try {
$dbh = …
Run Code Online (Sandbox Code Playgroud) 我有两个代码片段(关于static
关键字),我希望它们具有相同的输出,但实际上输出是不同的.
问题是为什么?
片段1
class base
{
public static $var = 1;
}
class sub extends base
{
public static $var = 2;
}
echo base::$var; // Outputs 1
Run Code Online (Sandbox Code Playgroud)
1
片段2
class base2
{
public static $var2 = 1;
}
class sub2 extends base2
{
}
sub2::$var2 = 2;
echo base2::$var2; // Outputs 2
Run Code Online (Sandbox Code Playgroud)
2
我是一名PHP初学者,目前正在学习"验证文件上传"部分.
我创建了一个包含以下代码的test.php页面:
var_dump(@$_FILES['file']['type']);
Run Code Online (Sandbox Code Playgroud)
首先,我上传了一张图片"img.gif"并返回:
string 'image/gif' (length=9)
Run Code Online (Sandbox Code Playgroud)
然后,我将图像的扩展名更改为".jpg"并返回:
string 'image/jpeg' (length=10)
Run Code Online (Sandbox Code Playgroud)
所以我意识到$ _FILES ["file"] ["type"]只返回上传的文件扩展名,但实际上没有检查它是什么文件.
在这个页面中,http://www.w3schools.com/php/php_file_upload.asp,有一个代码:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)
我想知道为什么上面的代码检查文件扩展名两次?我从上面的代码中删除了一些,这是我的新代码:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if (($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)
我的代码是否正确?或者你有更好的方法来验证上传文件是图像吗?
谢谢!
我是从http://www.php.net/manual/en/configure.about.php找到的
这些是PHP编译的配置选项
--with-apache[=DIR]
Build a static Apache module. DIR is the top-level Apache build directory, defaults to /usr/local/apache.
--with-apxs2[=FILE]
Build shared Apache 2.0 module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs.
Run Code Online (Sandbox Code Playgroud)
静态和共享的含义是什么?
我var_dump(@$_FILES['file']['type'])
用来测试我上传的文件类型
首先,我上传了一个exe file
名为" uninstall.exe
",然后返回
"string 'application/octet-stream' (length=24)"
Run Code Online (Sandbox Code Playgroud)
然后,我将此文件重命名为uninstall.png
,它返回
string 'image/png' (length=9)
Run Code Online (Sandbox Code Playgroud)
我的结论是:$ _FILES ['file'] ['type']只检查文件扩展名,而不是原始文件类型.
以下代码来自w3cschool:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)
我认为$_FILES["file"]["type"]
在上面的代码是不必要的,我们可以使用explode()
和检查文件扩展名in_array
我只是一个php初学者,有人可以证实我的想法吗?谢谢!
我是一个php和mysql初学者,我目前正在学习一个名为"使用php从web访问mysql数据库"的部分,在本书中,作者只使用了mysqli的例子,但当我搜索谷歌时,我发现pdo比mysqli好一些,我的问题是:我应该逃避书中的mysqli并且只学习pdo(来自网络)吗?
例如:
$contents = file_get_contents(image.png);
Run Code Online (Sandbox Code Playgroud)
是否可以从$ contents创建SplFileObject对象?
谢谢!
a {
transition: text-shadow, 0.5s, ease;
display: block;
padding: 20px 0px 20px 0px;
color: #fff;
text-shadow: #343434 1px 1px 1px;
text-decoration: none;
}
a:hover {
color: #fff;
text-shadow:
#343434 1px 1px 1px,
0 0 10px #fff,
0 0 20px #fff,
0 0 30px #fff,
0 0 40px #ff00de,
0 0 70px #ff00de,
0 0 80px #ff00de,
0 0 100px #ff00de,
0 0 150px #ff00de;
text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)
转换+文本阴影与firefox完美无瑕,但不使用chrome,任何人都知道如何解决这个问题?
请用firefox然后chrome打开以下链接,你会看到差异;
感谢帮助!
PS:我试过-webkit-transition,它不会起作用
我正在学习mysql手册:http: //dev.mysql.com/doc/refman/5.6/en/example-maximum-column-group-row.html我和"where.s1.article =混淆了s2.article'部分,这是什么意思?
Task: For each article, find the dealer or dealers with the most expensive price.
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
SELECT article, …
Run Code Online (Sandbox Code Playgroud) 我是一个mysql初学者,我正在研究外键.我想创建三个表:用户,项目,订单并将它们链接在一起
用户表:
CREATE TABLE users (
user_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(user_id)
);
Run Code Online (Sandbox Code Playgroud)
物品表:
CREATE TABLE items (
item_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(item_id)
);
Run Code Online (Sandbox Code Playgroud)
订单表:
CREATE TABLE orders (
order_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
item_id INT,
quantity INT(10) NOT NULL,
user_id INT,
PRIMARY KEY (order_id),
FOREIGN KEY (item_id) REFERENCES items (item_id),
FOREIGN KEY (user_id) REFERENCES users (user_id)
);
Run Code Online (Sandbox Code Playgroud)
但我收到错误1005:无法创建表'new.orders'(错误:150)
我的代码出了什么问题?
谢谢!